Python 模块
什么是模块
恭喜你坚持学到本章。此时的你已经不再是一个0基础小白了,你已经是一个Python的初学者了。你写的代码也不再是简单的hello world,而应该尝试写一些不那么简单的系统性工程,或者代码量较大的应用程序。然而,一个简单的Python文件在这种情况下已经过于臃肿,无法承担一个重量级别的 开发任务。因此,我们希望能够化繁为简,将功能模块化文件化,像搭积木一样,将不同的功能以组件化模块化的方式搭建起来。这就是本章要学习的一个新的知识点——模块。其实在前面的学习中,我们已经大量使用了。比如说time模块、random模块,使用它们的时候,我们直接使用关键字import,就已经导入了这些模块,然后就可以调用模块的一些方法和属性,极大地简化了我们的代码。
那么什么是模块呢?一个模块就相当于一个工具箱,如下图所示:
比如说我们前面使用的random模块,它就是一个工具箱,里面有非常多的工具。当我们要使用一个工具的时候,我们就从这个工具箱里取出一个工具,这里使用import把这个工具取出来,然后在使用的时候使用import random导入这个工具箱,接下来我们就可以使用工具箱里的工具了。
现在我们已经了解了模块,应该如何创建模块呢?比如说创建函数我们使用关键字def,创建类我们使用关键字class,其实,模块在代码中的形式就是一个Python文件,我们前面编辑的每一个Python文件,它都可以当做一个模块。如下图所示:
但是在实际开发过程中,我们通常会将一些实现了某一个特定功能的代码放置在一个Python文件中,然后把它当做一个模块。所以说,模块它是不需要创建的。比如说,在这里有三个Python文件,这三个Python文件中都使用了一个相同的功能,所以我将这个功能单独提出来,然后放到一个Python文件中,我就把 它称之为模块。如下图所示:
然后在其他Python文件中,当我需要实现这个功能的时候,我就调用这个Python模块。第二个Python文件也需要实现同样的功能,接着我们再来使用一套导入。从这个例子中我们就可以看到,模块的主要用途就是方便其他程序导入你的模块,并使用模块中的代码,这样就可以提高代码的可复用性以及可读性。此外还可以将一个很复杂的文件拆分为不同的模块,这样也是将代码进行模块化,这就是模块的作用。
模块的分类
在学习函数时,我们将函数大致分为两类。第一类是内置函数,即Python自带的函数,我们可以直接使用。第二类是自定义函数,根据个人需求定义的函数,被称为自定义函数。在本节,我们也来介绍一下模块的分类。模块可以大致分为三类。第一类是内置模块,与内置函数类似,是Python自带的。也就是说,当我们安装完Python后,就可以使用它的内置模块了,比如前面大量使用的time、datetime、random等模块,它们都是Python内置模块,由Python官方开发。要了解Python中的内置模块,可以通过Python官方文档查看,其中有一个叫做Python标准库的文档,全面介绍了Python中的内置模块。
在浏览器中地址输入:https://docs.python.org/zh-cn/3/library/index.html可以查看Python官方文档,如下所示:
我们这个页面查找一下time模块,使用快捷键ctrl+f,在搜索栏中输入time,页面往下翻,这里就是我们常用的time模块,它是属于操作系统服务的分类下面的,如下图所示:
我们点击看一下,这就是time模块,它的一些详细的介绍。
另外呢,time模块还有很多其它的方法,大家可以自行查看其他内置模块和它的方法。
Python内置模块虽然有很多,但都是一些比较常用的,不包括一些特定专业方向的模块,比如和web开发、机器学习、数据分析相关的模块。这些属于第三方模块,由热心的开发者或组织开发,并免费供给大家使用。要使用第三方模块,需要先下载,然后才能使用import导入。与内置模块不同的是,内置模块在下载完Python后就可以直接使用,无需额外下载。对于第三方模块的管理,有一个组织统一的管理平台,叫做PYPI(Python Package Index),类似手机应用商店,用户可以从中下载模块,开发者也可以将开发好的模块上传到其中供他人使用。最后,第三类是自定义模块,由我们自己编写的Python文件,实现特定功能。比如开发微信机器人自动回复的功能,可以将其拆分为多个模块,然后在主程序中导入相应的模块实现功能。如下图所示: